* Преобразование (трансформация) текстов. * Программа КОНЦЕПТ, 16.04.2012-18.04.2012, www.gendoc.ru * 20.04.2012 - Разбить на строки, Разбить на слова, Строки с большой буквы ИНИЦИАЛИЗАЦИЯ ВЫПОЛНЕНИЕ ****** ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ****** функция ВЫВОД строка список сцепить РЕЗУЛЬТИРУЮЩИЙ_СПИСОК $ (строка коды $результат [строка] '#;{}' ) >[строка] возврат функция ЗаменитьСпецсимволы строка память локальный рез длина_строки позиция символ присвоить рез '' позиция 1 строка размер длина_строки [строка] пока [позиция] <= [длина_строки] строка взять символ [строка] [позиция] список отобразить символ [символ] [СПЕЦ_ВХОД] [СПЕЦ_ВЫХОД] [символ] строка сцепить рез $ [символ] увеличить позиция цикл строка символы рез $ присвоить $результат [рез] возврат ****** ПРИКЛАДНЫЕ ФУНКЦИИ ****** функция 'К верхнему регистру' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] строка прописные СТРОКА $ ВЫВОД [СТРОКА] следующий возврат функция 'К нижнему регистру' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] строка строчные СТРОКА $ ВЫВОД [СТРОКА] следующий возврат функция 'Строки с большой буквы' память локальный первая_буква для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] строка взять первая_буква [СТРОКА] 1 строка прописные первая_буква $ строка присвоить СТРОКА $ 1 [первая_буква] ВЫВОД [СТРОКА] следующий возврат функция 'Добавить префикс' ввести переменная ПОДСТРОКА 'Введите префикс:' ';-;*;?' если [$УспешныйВвод] для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД "[ПОДСТРОКА][СТРОКА]" следующий конец возврат функция 'Добавить суффикс' ввести переменная ПОДСТРОКА 'Введите суффикс:' ';.;<точка с запятой>' если [$УспешныйВвод] если [ПОДСТРОКА] == '<точка с запятой>' присвоить ПОДСТРОКА ';' конец для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД "[СТРОКА][ПОДСТРОКА]" следующий конец возврат функция 'Обрамить строку' память локальный префикс суффикс присвоить префикс '' суффикс '' ввести переменная ПОДСТРОКА 'Введите символы обрамления:' ';"";<одинарные кавычки>;();[];{};<>;**' если [$УспешныйВвод] если [ПОДСТРОКА] == '<одинарные кавычки>' присвоить ПОДСТРОКА "''" конец если (строка размер $результат [ПОДСТРОКА] ) >= 2 строка взять префикс [ПОДСТРОКА] 1 строка взять суффикс [ПОДСТРОКА] 2 конец конец для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД "[префикс][СТРОКА][суффикс]" следующий возврат функция 'Заключить в тэги HTML/XML' ввести переменная ПОДСТРОКА 'Введите тэг:' 'p;b;i;u;td;tr' если [$УспешныйВвод] если [ПОДСТРОКА] != '' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД "<[ПОДСТРОКА]>[СТРОКА]" следующий конец конец возврат функция 'Вставить пустые строки' память локальный количество ввести переменная количество 'Введите количество пустых строк:' '1;2;3;4;5;6;7;8;9;10' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД [СТРОКА] для (список сгенерить $результат 1 [количество] ) ВЫВОД '' следующий следующий возврат функция 'Сгенерить пустые строки' память локальный количество ввести переменная количество 'Введите количество пустых строк:' '1;2;3;4;5;6;7;8;9;10;20;30;40;50' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД [СТРОКА] следующий для (список сгенерить $результат 1 [количество] ) ВЫВОД '' следующий возврат функция 'Вставить пробелы слева' память локальный количество префикс ввести переменная количество 'Введите количество пробелов:' '1;2;3;4;5;6;7;8;9;10' строка реплицировать префикс ' ' [количество] для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД "[префикс][СТРОКА]" следующий возврат функция 'Удалить символы' ввести переменная ПОДСТРОКА 'Введите символы, котрые нужно удалить:' [МНОЖ_ФИЛЬТРОВ] если [$УспешныйВвод] для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД (строка заменитьСимволы $результат [СТРОКА] [ПОДСТРОКА] '' ) следующий конец возврат функция 'Оставить только числа' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД (строка фильтр $результат [СТРОКА] '0123456789+-.,' ) следующий возврат функция 'Удалить пустые строки' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] если (строка отсечьПробелы $результат [СТРОКА] ) != '' ВЫВОД [СТРОКА] конец следующий возврат функция 'Удалить обрамляющие пробелы' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] строка отсечьПробелы СТРОКА $ ВЫВОД [СТРОКА] следующий возврат функция 'Вставить пробел после каждого символа (разреживание)' память локальный позиция длина_строки РЕЗ для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] строка размер длина_строки [СТРОКА] присвоить позиция 1 РЕЗ '' пока [позиция] <= [длина_строки] строка сцепить РЕЗ $ (строка взять $результат [СТРОКА] [позиция] ) ' ' увеличить позиция цикл ВЫВОД [РЕЗ] следующий возврат функция 'Нумерация строк' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] ВЫВОД "[$НомерИтерации][СТРОКА]" следующий возврат функция 'Инверсия строк' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] строка инвертировать СТРОКА $ ВЫВОД [СТРОКА] следующий возврат функция 'Упорядочить строки' для (список упорядочить $результат [ИСХОДНЫЙ_СПИСОК] ) строка символы СТРОКА [$ОбъектЦикла] ВЫВОД [СТРОКА] следующий возврат функция 'Русский текст на английской клавиатуре' память локальный позиция длина_строки символ РЕЗ для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] строка размер длина_строки [СТРОКА] присвоить позиция 1 РЕЗ '' пока [позиция] <= [длина_строки] строка взять символ [СТРОКА] [позиция] список отобразить символ [символ] [МНОЖ_РУССКИЕ_ВСЕ] [МНОЖ_РУС_ПО_АНГ_ВСЕ] [символ] строка сцепить РЕЗ $ [символ] увеличить позиция цикл ВЫВОД [РЕЗ] следующий возврат функция 'В другой раскладке клавиатуры' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] строка заменитьСимволы СТРОКА $ [СТР_РУС_АНГ_ВСЕ] [СТР_РУС_АНГ_ВСЕ_В_ДРУГОЙ_РАСКЛАДКЕ_КЛАВИАТУРЫ] ВЫВОД [СТРОКА] следующий возврат функция 'Преобразование текста в HTML страницу' ВЫВОД '' ВЫВОД '' ВЫВОД '' ВЫВОД 'Текст' ВЫВОД '' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] присвоить СТРОКА (ЗаменитьСпецсимволы [СТРОКА] ) строка сцепить СТРОКА
[СТРОКА] ВЫВОД [СТРОКА] следующий ВЫВОД '' возврат функция 'Разбить на строки' память локальный позиция ввести переменная ПОДСТРОКА 'Введите символы - разделители:' '.;,;<точка с запятой>' если [$УспешныйВвод] если [ПОДСТРОКА] != '' если [ПОДСТРОКА] == '<точка с запятой>' присвоить ПОДСТРОКА ';' конец для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] пока [СТРОКА] != '' строка найтиСимволы позиция [СТРОКА] [ПОДСТРОКА] если [позиция] > 0 ВЫВОД (строка копировать $результат [СТРОКА] 1 [позиция] ) строка удалить СТРОКА $ 1 [позиция] иначе ВЫВОД [СТРОКА] присвоить СТРОКА '' конец цикл следующий конец конец возврат функция 'Разбить на слова' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] строка кСпискуСлов СТРОКА $ для [СТРОКА] ВЫВОД [$ОбъектЦикла] следующий следующий возврат функция 'Разложить список КОНЦЕПТ' для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] для [СТРОКА] ВЫВОД [$ОбъектЦикла] следующий следующий возврат функция 'Собрать в список КОНЦЕПТ' память локальный список присвоить список {} для [ИСХОДНЫЙ_СПИСОК] строка символы СТРОКА [$ОбъектЦикла] список сцепить список $ [СТРОКА] следующий ВЫВОД [список] возврат ****** ИНИЦИАЛИЗАЦИЯ ****** функция ИНИЦИАЛИЗАЦИЯ строка коды ТЗ ';' строка коды РЕШ '#' присвоить СПЕЦ_ВХОД '>;<;";&; ;#' СПЕЦ_ВЫХОД ">[ТЗ];<[ТЗ];"[ТЗ];&[ТЗ]; [ТЗ];[РЕШ]" присвоить РЕЗУЛЬТИРУЮЩИЙ_СПИСОК 'строка 1;строка 2;строка 3' список сцепить МЕНЮ_КОМАНД \ '*** Преобразование символов текста ***' \ ' К верхнему регистру; К нижнему регистру' \ ' Строки с большой буквы' \ ' В другой раскладке клавиатуры' ' Русский текст на английской клавиатуре' \ '*** Добавление в начало и конец строк ***' \ ' Добавить префикс; Добавить суффикс; Обрамить строку; Заключить в тэги HTML/XML; Нумерация строк' \ ' Вставить пробелы слева' \ '*** Действия со строками текста ***' \ ' Вставить пустые строки' \ ' Упорядочить строки' \ ' Сгенерить пустые строки' \ '*** Удаление символов из текста ***' \ ' Удалить символы; Оставить только числа' \ ' Удалить пустые строки; Удалить обрамляющие пробелы' \ '*** Другие действия ***' \ ' Вставить пробел после каждого символа (разреживание)' \ ' Инверсия строк' \ ' Преобразование текста в HTML страницу' \ ' Разбить на строки; Разбить на слова' \ '*** Действия для КОНЦЕПТ ***' \ ' Разложить список КОНЦЕПТ; Собрать в список КОНЦЕПТ' ****** Определение множеств символов ****** присвоить СТР_РУССКИЕ_СТРОЧНЫЕ абвгдежзийклмнопрстуфхцчшщьъыэюя строка прописные СТР_РУССКИЕ_ПРОПИСНЫЕ [СТР_РУССКИЕ_СТРОЧНЫЕ] присвоить СТР_РУССКИЕ_ВСЕ "[СТР_РУССКИЕ_ПРОПИСНЫЕ][СТР_РУССКИЕ_СТРОЧНЫЕ]" строка кСписку МНОЖ_РУССКИЕ_ВСЕ [СТР_РУССКИЕ_ВСЕ] присвоить СТР_АНГЛИЙСКИЕ_СТРОЧНЫЕ abcdefghijklmnopqrstuvwxyz строка прописные СТР_АНГЛИЙСКИЕ_ПРОПИСНЫЕ [СТР_АНГЛИЙСКИЕ_СТРОЧНЫЕ] присвоить СТР_АНГЛИЙСКИЕ_ВСЕ "[СТР_АНГЛИЙСКИЕ_ПРОПИСНЫЕ][СТР_АНГЛИЙСКИЕ_СТРОЧНЫЕ]" строка кСписку МНОЖ_АНГЛИЙСКИЕ_ВСЕ [СТР_АНГЛИЙСКИЕ_ВСЕ] присвоить СТР_ЦИФРЫ 0123456789 строка сцепить СТР_ЗНАКИ_ПРЕПИНАНИЯ ".,:?!-'" '"' присвоить СТР_СКОБКИ '()[]{}<>' присвоить СТР_РУС_СТРО_В_АНГ f,dult;pbqrkvyjghcnea[wxiom]s'.z присвоить СТР_РУС_ПРОП_В_АНГ F,DULT;PBQRKVYJGHCNEA[WXIOM]S'.Z присвоить СТР_АНГ_СТРО_В_РУС фисвуапршолдьтщзйкыегмцчня присвоить СТР_АНГ_ПРОП_В_РУС ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ присвоить СТР_РУС_АНГ_ВСЕ "[СТР_РУССКИЕ_ВСЕ][СТР_АНГЛИЙСКИЕ_ВСЕ]" присвоить СТР_РУС_АНГ_ВСЕ_В_ДРУГОЙ_РАСКЛАДКЕ_КЛАВИАТУРЫ "[СТР_РУС_ПРОП_В_АНГ][СТР_РУС_СТРО_В_АНГ][СТР_АНГ_ПРОП_В_РУС][СТР_АНГ_СТРО_В_РУС]" присвоить МНОЖ_РУС_ПО_АНГ_СТРОЧНЫЕ a;b;v;g;d;e;zh;z;i;j;k;l;m;n;o;p;r;s;t;u;f;h;c;ch;sh;shch;;;y;e;ju;ja строка прописные МНОЖ_РУС_ПО_АНГ_ПРОПИСНЫЕ [МНОЖ_РУС_ПО_АНГ_СТРОЧНЫЕ] список сцепить МНОЖ_РУС_ПО_АНГ_ВСЕ [МНОЖ_РУС_ПО_АНГ_ПРОПИСНЫЕ] [МНОЖ_РУС_ПО_АНГ_СТРОЧНЫЕ] присвоить МНОЖ_ФИЛЬТРОВ "[СТР_РУССКИЕ_СТРОЧНЫЕ];[СТР_АНГЛИЙСКИЕ_СТРОЧНЫЕ];[СТР_ЦИФРЫ];[СТР_РУССКИЕ_ПРОПИСНЫЕ];[СТР_АНГЛИЙСКИЕ_ПРОПИСНЫЕ];[СТР_ЗНАКИ_ПРЕПИНАНИЯ];[СТР_СКОБКИ]" возврат ****** ГЛАВНАЯ ФУНКЦИЯ ****** функция ВЫПОЛНЕНИЕ присвоить НОМЕР_ШАГА 0 > >Протокол >======== пока [$Истина] ввести текст ИСХОДНЫЙ_СПИСОК 'Введите исходный текст для обработки (ОТМЕНА - для завершения работы программы):' [РЕЗУЛЬТИРУЮЩИЙ_СПИСОК] если [$УспешныйВвод] если [НОМЕР_ШАГА] = 0 > >*** Исходный текст *** для [ИСХОДНЫЙ_СПИСОК] >[$ОбъектЦикла] следующий конец ввести меню1 ДЕЙСТВИЕ 'Выберите действие:' [МЕНЮ_КОМАНД] если [$УспешныйВвод] строка отсечьПробелы ДЕЙСТВИЕ $ если (строка взять $результат [ДЕЙСТВИЕ] 1 ) != '*' увеличить НОМЕР_ШАГА > >*** Шаг [НОМЕР_ШАГА]. [ДЕЙСТВИЕ] *** присвоить РЕЗУЛЬТИРУЮЩИЙ_СПИСОК {} вызвать [ДЕЙСТВИЕ] конец конец иначе СТОП конец цикл возврат